home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / dkbuts.zip / SPLITDKB.BAS < prev    next >
BASIC Source File  |  1991-05-16  |  5KB  |  166 lines

  1. '---------------------
  2. ' SPLITDKB.BAS
  3. ' Creates a series of batchfiles to run strips of DKB data files on
  4. ' mulitple computers.
  5. ' Concept by Randy Antler.
  6. ' Written by Dan Farmer.
  7. '---------------------
  8. ' Released 03/10/91
  9. ' Post-release changes:
  10. '     Convert COMMAND$ Switches to lower-case!
  11. '---------------------
  12.  
  13. DEFINT A-Z
  14. FALSE = 0 : TRUE = NOT FALSE
  15.  
  16. '          ---  REMOVE LEADING AND TRAILING SPACES
  17. DEF FNTrim$(x$)
  18.     WHILE LEFT$(x$,1)=" "
  19.         x$=MID$(x$,2)
  20.     WEND
  21.     WHILE RIGHT$(x$,1)=" "
  22.         x$=LEFT$(x$,LEN(x$)-1)
  23.     WEND
  24.     FNTrim$=x$
  25. END DEF
  26.  
  27. '       --- Convert from a number to a trimmed string in one step.
  28. DEF FNN2S$(n) = FNTrim$(STR$(n))
  29.  
  30. '          ---  Convert string to lower case
  31. DEF FNLower$(X$)
  32.     STATIC A$,I%
  33.     IF LEN(X$) >0 THEN
  34.         FOR I% = 1 TO LEN(X$)
  35.             A$ = MID$(X$,I%,1)
  36.             IF A$ >= "A" AND A$ <= "Z" THEN_
  37.                 MID$(X$,I%,1) = CHR$(ASC(A$)+32)
  38.         NEXT I%
  39.     END IF
  40.     FNLower$ = X$
  41. END DEF
  42.  
  43.  
  44. CLS
  45. CMD$=FNTrim$(COMMAND$)
  46. ASPACE = INSTR(CMD$," ")
  47. IF ASPACE THEN
  48.     DATAFILE$ = LEFT$(CMD$,ASPACE-1)
  49.     SWITCH$=FNLower$(FNTrim$(MID$(CMD$,ASPACE+1)))
  50. ELSE
  51.     DATAFILE$=CMD$
  52.     SWITCH$= "dkbno87 -p -a -v +d"
  53. END IF
  54.  
  55. IF DATAFILE$="" THEN
  56.     LOCATE 1,1 : PRINT "SPLITDKB creates batchfiles for running a DKB script on multiple"
  57.     LOCATE 2,1 : PRINT "computers."
  58.     LOCATE 3,1 : PRINT "USAGE: SPLITDKB datafile[.dat] [switch string]"
  59.     LOCATE 4,1 : PRINT "       Default switches are : DKBNO87 -p -a -v +d"
  60.     LOCATE 5,1 : PRINT "To specify where to send the output files, SET GLUE=directory."
  61.     LOCATE 6,1 : PRINT "To specify where to get the data file, SET DATA=directory."
  62.     SYSTEM                            ' END
  63. ELSE
  64.     LOCATE 1,1 : PRINT "SPLITDKB: Create batchfiles for running " + DATAFILE$ + ".DAT"
  65. END IF
  66. ' GET THE DIRECTORYS FROM THE ENVIRONMENT VARIABLE "GLUE"
  67. GLUEDIR$ = FNTrim$(ENVIRON$("GLUE"))  ' Where to put the OUTPUT files.
  68. DATADIR$ = FNTrim$(ENVIRON$("DATA"))  ' Where to get the INPUT file.
  69.  
  70. ' Add trailing backslashes, if any
  71. IF GLUEDIR$ <> "" THEN
  72.     IF RIGHT$(GLUEDIR$,1) <> "\" THEN GLUEDIR$=GLUEDIR$ + "\"
  73. END IF
  74. IF DATADIR$ <> "" THEN
  75.     IF RIGHT$(DATADIR$,1) <> "\" THEN DATADIR$=DATADIR$ + "\"
  76. END IF
  77.  
  78. LOCATE 3,1 : PRINT "Glue Directory = " + GLUEDIR$
  79. LOCATE 4,1 : PRINT "Data Dirctory = " + DATADIR$
  80.  
  81. ' Trim extension if provided...
  82. ADOT = INSTR(DATAFILE$,".")
  83. IF NOT ADOT THEN ROOT$ = DATAFILE$: DATAFILE$ = DATAFILE$ + ".DAT"
  84. IF ADOT THEN ROOT$ = LEFT$(DATAFILE$,ADOT-1)
  85.  
  86.  
  87. LOCATE 6,1 : PRINT "Number of cols [320]"
  88. LOCATE 7,1 : PRINT "Number of rows [200]"
  89. LOCATE 8,1 : PRINT "How many parts? [1] (max=9) "
  90.  
  91. LOCATE 6,22: INPUT COLS
  92. IF COLS  = 0 THEN COLS  = 320
  93.  
  94. NEWROWS$ = FNN2S$(COLS*0.625)
  95. LOCATE 7,1: PRINT SPACE$(80);
  96. LOCATE 7,1 : PRINT "Number of rows ["+NEWROWS$+"]"
  97. LOCATE 7,22: INPUT ROWS
  98. IF ROWS  = 0 THEN ROWS  = VAL(NEWROWS$)
  99.  
  100.  
  101. LOCATE 8,31: INPUT PARTS
  102. IF PARTS = 0 THEN PARTS =   1
  103. IF PARTS > 9 THEN PARTS = 9 ' Avoid overflow of some of the PRINT USING formats
  104.  
  105. COLS$  = " -w"+FNN2S$(COLS)
  106. ROWS$  = " -h"+FNN2S$(ROWS)
  107. PARTS$ = FNN2S$(PARTS)
  108.  
  109. START.ROW = 0
  110. END.ROW   = 0
  111. ABLOCK    = ROWS/PARTS
  112. LASTROW   = ROWS        ' LAST BATCH FILE FINISHES
  113. DATAFILE$ = " -i" + DATADIR$ + DATAFILE$
  114.  
  115. FOR I = 1 TO PARTS
  116.     START.ROW = END.ROW
  117.     IF I < PARTS THEN END.ROW = END.ROW + ABLOCK ELSE END.ROW = LASTROW
  118.  
  119.     BATCHFILE.NAME$ ="PART"+FNN2S$(I)+".BAT"       ' PART1.BAT, etc.
  120.     PRINT "Writing " + BATCHFILE.NAME$
  121.     CLOSE #1: OPEN BATCHFILE.NAME$ FOR OUTPUT AS #1
  122.     TGA$="PART"+FNN2S$(I)+".TGA"
  123.     START$ = " -s" + FNN2S$(START.ROW)
  124.     END$   = " -e" + FNN2S$(END.ROW)
  125.  
  126.     PRINT #1, "rem " + BATCHFILE.NAME$
  127.     PRINT #1, SWITCH$ + ROWS$ + COLS$ + DATAFILE$ + " -o" + GLUEDIR$ + TGA$ + START$ + END$
  128.     PRINT #1, USING "ECHO Done. > TGA#DONE.FLG";I
  129.     IF END.ROW = LASTROW THEN
  130.         IF GLUEDIR$ <> "" THEN PRINT #1, "CD " + MID$(GLUEDIR$,1,LEN(GLUEDIR$)-1)
  131.         PRINT #1, "CALL " + GLUEDIR$ +"GLUE.BAT"
  132.     END IF
  133.  
  134. NEXT I
  135.  
  136. ' Now, write GLUE.BAT to put all the pieces back together
  137. PRINT "Writing " + GLUEDIR$ + "GLUE.DAT"
  138. CLOSE #1 : OPEN GLUEDIR$ + "GLUE.BAT" FOR OUTPUT AS #1
  139.     PRINT #1, "@ECHO OFF"
  140.     PRINT #1,":WAIT"
  141.     PRINT #1,"ECHO Waiting for all parts to finish..."
  142.     FOR I = 1 TO PARTS
  143.         PRINT #1, USING "IF NOT EXIST TGA#DONE.FLG GOTO WAIT";I
  144.     NEXT I
  145.  
  146.     IF PARTS > 1 THEN
  147.         PRINT #1, "IF EXIST GLUETGA.EXE GLUETGA "+ ROOT$;
  148.         FOR I = 1 TO PARTS
  149.             PRINT #1, USING " PART#.TGA";I;
  150.         NEXT I
  151.     ELSE
  152.         PRINT #1, "COPY PART1.TGA " + ROOT$ + ".TGA"
  153.     END IF
  154.  
  155.     PRINT #1,""
  156.     PRINT #1, "IF EXIST PROCESS.BAT CALL PROCESS.BAT " + ROOT$
  157.     FOR I = 1 TO PARTS
  158.         PRINT #1, USING "DEL TGA#DONE.FLG";I
  159.         PRINT #1, USING "DEL PART#.TGA";I
  160.     NEXT I
  161.     IF GLUEDIR$ <> "" THEN PRINT #1, "CD.."
  162.     PRINT #1, "ECHO " + CHR$(7)
  163.     PRINT #1, "EXIT"
  164. CLOSE #1
  165. END
  166.